package jmine.tec.sync.domain;

import jmine.tec.sync.domain.enumx.SynchronizationOperationType;
import bancosys.tec.persist.builders.AbstractDBBuilder;

/**
 * Builde de {@SynchronizationErrorEntity}
 * 
 * @author gabriel.silva
 */
public class SynchronizationErrorEntityBuilder extends AbstractDBBuilder<SynchronizationErrorEntity> {

    private SynchronizationErrorEntity entity = this.createBean(SynchronizationErrorEntity.class);

    /**
     * {@inheritDoc}
     */
    @Override
    protected SynchronizationErrorEntity doBuild() {
        return this.entity;
    }

    /**
     * cria a entidade
     * 
     * @return um SynchronizationErrorEntityBuilder
     */
    public static SynchronizationErrorEntityBuilder aSync() {
        return new SynchronizationErrorEntityBuilder();
    }

    /**
     * Seta id na entidade
     * 
     * @param remoteId id remoto
     * @return SynchronizationErrorEntityBuilder
     */
    public SynchronizationErrorEntityBuilder remoteId(Long remoteId) {
        this.entity.setRemoteEntityId(remoteId);
        return this;
    }

    /**
     * Seta id na entidade
     * 
     * @param entityClass classe da entidade
     * @return SynchronizationErrorEntityBuilder
     */
    public SynchronizationErrorEntityBuilder entityClass(String entityClass) {
        this.entity.setEntityClass(entityClass);
        return this;
    }

    /**
     * Seta id na entidade
     * 
     * @param message mensagem de erro
     * @return SynchronizationErrorEntityBuilder
     */
    public SynchronizationErrorEntityBuilder message(String message) {
        this.entity.setMessage(message);
        return this;
    }

    /**
     * Seta origem na entidade
     * 
     * @param source origem da entidade
     * @return SynchronizationErrorEntityBuilder
     */
    public SynchronizationErrorEntityBuilder origem(String source) {
        this.entity.setSource(source);
        return this;
    }

    /**
     * Seta id na entidade
     * 
     * @param tipo tipod a operação
     * @return SynchronizationErrorEntityBuilder
     */
    public SynchronizationErrorEntityBuilder tipoOperacao(SynchronizationOperationType tipo) {
        this.entity.setOperationType(tipo);
        return this;
    }

    /**
     * Seta id na entidade
     * 
     * @param entityName nome da entidade
     * @return SynchronizationErrorEntityBuilder
     */
    public SynchronizationErrorEntityBuilder entityName(String entityName) {
        this.entity.setEntityName(entityName);
        return this;
    }

}
